import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import argparse
import time
import numpy as np
from collections import Counter
import random
import string
from datetime import datetime

# 生成随机字符串作为文件名的一部分
def random_string(length=6):
    return ''.join(random.choices(string.ascii_lowercase, k=length))

def parse_args():
    parser = argparse.ArgumentParser("")
    parser.add_argument("--input", "-i", default='/homeb/xiaoyf/data/HG002/R9.4/part1/example.1w.tsv', type=str,required=False)
    parser.add_argument("--output", "-o", default='/homeb/xiaoyf/data/HG002/R9.4/part1/', type=str,required=False)
    return parser.parse_args()

# 读取TSV文件
args=parse_args()
df=[]
with open(args.input, 'r') as f:
    for line in f:
        words=line.strip().split('\t')
        seq=words[3]
        df.append(len(seq))
        #for sig in words[4].split(";"):
        #    df.append(len(sig.split(",")))



#length_counts = Counter(df)

# 计算每个长度的比例
#total_samples = len(df)
#length_ratios = {length: count / total_samples for length, count in length_counts.items()}

# 绘制比例图
#plt.bar(length_ratios.keys(), length_ratios.values())
#plt.xlabel('Length')
#plt.ylabel('Ratio')
#plt.title('Ratio of Sublist Lengths')

# 生成时间戳和随机字符串作为文件名的一部分
timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
random_suffix = random_string()

# 生成时间戳和随机字符串作为文件名的一部分
timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
random_suffix = random_string()

# 构建文件名
file_name = f'ratio_plot_{timestamp}_{random_suffix}.png'

# 保存图像

# 绘制密度分布图
sns.kdeplot(df)
#plt.xlabel('signal len')  
plt.ylabel('Density')  
plt.title('Density Plot')  
#plt.xlim(0, 50)
#plt.show()

#plt.savefig(args.output+'density_siglen.png')  
#plt.show()
# 绘制比例图
#plt.bar(length_ratios.keys(), length_ratios.values())
plt.xlabel('Length')
plt.xlim(0, 40000)
#plt.ylabel('Ratio')
#plt.title('Ratio of Sublist Lengths')

plt.savefig(args.output+file_name)